package com.xiaolin.Thread.synchronization;

/**
 * @ClassName BuyTicketBySynchronized
 * @Description TODO
 * @Detail 抢票的同步问题，使用synchronized来解决同步问题
 * @Author MyPC
 * @Date 2020/10/5
 * @Version 1.0
 */
public class BuyTicketBySynchronized {
    public static void main(String[] args) {
        // 创建一个线程实例
        TicketSystem ts1=new TicketSystem();
        // 开启一个线程
        new Thread(ts1).start();
        // 开启另一个线程，与线程1共享ts1的资源
        new Thread(ts1).start();
    }
}

class TicketSystem implements Runnable{
    //所有线程共享这些票
    private int ticket=100;
    @Override
    public void run() {
        for (int i=0;i<100;i++){
            this.sale();
        }
    }
    //加了同步锁之后，同一时刻只能有一个线程完成操作
    private synchronized void sale(){
        if(ticket>0){
            System.out.println(Thread.currentThread()+"抢到了第"+ticket+"张票");
            ticket-=1;
        }
    }
}
